<?xml version="1.0" encoding="utf-8" ?>

<xsl:stylesheet
   version="2.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
>

<xsl:output method="xml" 
	indent="yes"  />

<xsl:template match="ead">
	<xsl:apply-templates select="archdesc" />
</xsl:template>

<xsl:template match="ead/archdesc">

	<xsl:element name="errors">

		<xsl:call-template name="check-date" />
		<xsl:apply-templates select="dsc/c" />
		
	</xsl:element>

</xsl:template>

<xsl:template match="c">
	
		<xsl:call-template name="check-date" />
		<xsl:apply-templates select="c" />

</xsl:template>

<xsl:template name="check-date">

	<xsl:if test="did/unitdate">
	
		<xsl:element name="id">
			<xsl:value-of select="did/unitid[@label='Reference']"/>
		</xsl:element>
		<xsl:choose>
			<xsl:when test="did/unitdate/@normal">
				<xsl:element name="normal">
					<xsl:value-of select="did/unitdate/@normal"/>
				</xsl:element>
	
				<xsl:choose>
					<xsl:when test="did/unitdate/@normal = ''" >
						<xsl:element name="error">unitdate/@normal null</xsl:element>
					</xsl:when>
					<xsl:when test="matches(normalize-space(did/unitdate/@normal), '^1\d{3}$')" />
					<xsl:when test="matches(normalize-space(did/unitdate/@normal), '^1\d{3}-1\d{3}$')" />
					<xsl:otherwise>
						<xsl:element name="error">unitdate/@normal not yyyy or yyyy-yyyy</xsl:element>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:when>
			<xsl:otherwise>
				<xsl:element name="error">unitdate with no @normal</xsl:element>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:if>

</xsl:template>

<xsl:template match="*|@*|text()" />

</xsl:stylesheet>

